package com.haixiaoke.saas.order.mapper;

import com.haixiaoke.saas.order.domain.OrderAuditRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 订单审核记录Mapper接口
 *
 * @author qixi
 * @date 2024-04-02
 */
public interface OrderAuditRecordMapper {
    /**
     * 查询订单审核记录
     *
     * @param recordId 订单审核记录主键
     * @return 订单审核记录
     */
    OrderAuditRecord selectOrderAuditRecordByRecordId(Long recordId);

    /**
     * 查询订单审核记录列表
     *
     * @param orderAuditRecord 订单审核记录
     * @return 订单审核记录集合
     */
    List<OrderAuditRecord> selectOrderAuditRecordList(OrderAuditRecord orderAuditRecord);

    /**
     * 新增订单审核记录
     *
     * @param orderAuditRecord 订单审核记录
     * @return 结果
     */
    int insertOrderAuditRecord(OrderAuditRecord orderAuditRecord);

    /**
     * 修改订单审核记录
     *
     * @param orderAuditRecord 订单审核记录
     * @return 结果
     */
    int updateOrderAuditRecord(OrderAuditRecord orderAuditRecord);

    /**
     * 删除订单审核记录
     *
     * @param recordId 订单审核记录主键
     * @return 结果
     */
    int deleteOrderAuditRecordByRecordId(Long recordId);

    /**
     * 批量删除订单审核记录
     *
     * @param recordIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteOrderAuditRecordByRecordIds(Long[] recordIds);

    OrderAuditRecord selectOrderAuditRecordByOrderId(String orderId);

    OrderAuditRecord selectOrderAuditRecordByOrderIdAndAuditRecordState(@Param("orderId") String orderId, @Param("recordState") String recordState);

    /**
     * 查询订单审核记录取消预订的列表
     * @param orderAuditRecord
     * @return
     */
    List<OrderAuditRecord> selectAuditcanCelReservationList(OrderAuditRecord orderAuditRecord);

    OrderAuditRecord selectOrderCancelReservationGetInfoById(Long recordId);

    int apartmentCountOrderState(Long userId);

    List<OrderAuditRecord> selectOrderAuditRecordByOrderIds(List<String> orderIds);
}
